home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Bavarian / Bavarian #087 (19xx)(APS Electronic).zip / Bavarian #087 (19xx)(APS Electronic).adf / Programme / AktieVD3.25 < prev    next >
Text File  |  1989-02-05  |  21KB  |  561 lines

  1.    IF FRE(0)<50000& THEN CLEAR ,70000&
  2. anfang:
  3.    CLEAR
  4.    ON BREAK GOSUB 0
  5.    ON ERROR GOTO achtung
  6.    CHDIR ":Daten"
  7.    DIM SHARED nam$(8,16),aktie$(8),zahl$(8,5),monat$(14),anz(12),anf(15),wert1$(10),geld(40) 
  8.    DIM SHARED wahr(40),tag$(366),wert(8,366),defis$(20)
  9.    ausgabeart=0
  10.    a=VAL(RIGHT$(DATE$,4)) 
  11.    jahr=a-1988 
  12.    DATA "Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"    
  13. 31 DATA 31,29,31,30,31,30,31,31,30,31,30,31
  14. 32 DATA "USA","CAN","GB","IRL","CH","B","F","NL","D","I","DK","NK","SK","YU","P","E","J","A"
  15.    FOR q=1 TO 12:READ a$:monat$(q)=a$:NEXT
  16.    FOR w=1 TO 12
  17.    READ w$:e=VAL(w$)
  18.    IF e=29 AND a/4 <> INT(a/4) THEN e=28
  19.    FOR q=1 TO e:tag=tag+1
  20.    IF q=1 THEN anf(w)=tag
  21.    tag$(tag)=STR$(q)+"."+monat$(w)
  22.    anz(w)=e  
  23.    NEXT:NEXT 
  24.    RESTORE 31:a=VAL(LEFT$(DATE$,2)):b=VAL(MID$(DATE$,4,2)):tag=0
  25.    FOR q=1 TO a-1
  26.    READ c$:c=VAL(c$):tag=tag+c
  27.    NEXT:tag=tag+b:tag=(INT(tag/7))*7
  28.    RESTORE 32:FOR q = 1 TO 18 
  29.    READ defis$(q):NEXT
  30.    OPEN "kurse" FOR INPUT AS #1
  31.    FOR q = 1 TO 36
  32.    INPUT #1,wahr(q)
  33.    NEXT:CLOSE #1
  34.    SCREEN 2,640,256,2,2  
  35.    WINDOW 1,"                            LANGSAME DEMOVERSION !!!!",(0,0)-(631,200),0,2
  36. Colors:
  37.    PALETTE 2,0,0,0  
  38.    PALETTE 1,.1,1,1 
  39.    PALETTE 0,.5,.5,.5  
  40.    PALETTE 3,.9,.9,.9   
  41.    PAINT(10,10),3
  42.    MENU 1,0,1,"Projekt      "
  43.    MENU 1,1,1,"Info         "
  44.    MENU 1,2,1,"Neustart     " 
  45.    MENU 1,3,1,"Daten laden  "
  46.    MENU 1,4,1,"Daten sichern"
  47.    MENU 1,5,1,"Daten löschen"
  48.    MENU 1,6,1,"Ende         "       
  49.    MENU 2,0,1,"Ausgabe      "
  50.    MENU 2,1,1,".. in Zahlen -" 
  51.    MENU 2,2,1,".. in Grafik  " 
  52.    MENU 3,0,1,"Spezielles   "
  53.    MENU 3,1,1,"Statistik    "
  54.    MENU 3,2,1,"Drucken      "
  55.    MENU 3,3,1,"Umrechnen    "
  56.    MENU 3,4,1,"Valuten      "
  57.    MENU 3,5,1,"Dividende    "
  58.    MENU 4,0,0," "
  59.    LINE(500,5)-(590,20),,bf
  60.    LINE(190,5)-(430,20),,bf
  61.    LINE(20,5)-(120,20),,bf
  62.    CALL linieren(500!,5!,590!,20!)
  63.    CALL linieren(190!,5!,430!,20!)
  64.    CALL linieren(20!,5!,120!,20!)
  65.    COLOR 2,1:LOCATE 2,34:PRINT"AKTIEN V3.2"
  66.    LOCATE 2,5:PRINT DATE$
  67.    LINE (10,40)-(180,178),3,bf
  68.    CALL linieren(10!,40!,178!,178!)
  69.    LINE (210,40)-(610,177),3,bf
  70.    CALL linieren(210!,40!,610!,177!)
  71.    w=0
  72.    FOR q = 1 TO 16 STEP 2:w=w+1:COLOR 2,3
  73.    LOCATE q+6,3:PRINT w:LOCATE q+6,5:PRINT"." 
  74.    COLOR 3,0:LOCATE q+6,6:PRINT"                ":NEXT 
  75.    
  76.   GOSUB info:LOCATE 5,38:COLOR 2,3:PRINT tag$(tag)+" - "+tag$(tag+6) 
  77.   MOUSE ON:MENU ON 
  78. wahl1:
  79.    IF fehler=1 THEN anfang
  80.    COLOR 2,1                  
  81.    zeile=CSRLIN:spalte=POS(0) 
  82.    LOCATE 2,65:PRINT TIME$
  83.    LOCATE zeile,spalte
  84.    ON MENU(0) GOTO projekt,ausgabe,spezi
  85.    IF MOUSE(0)<-1 THEN GOSUB eingabe
  86.    GOTO wahl1
  87. projekt: 
  88.    ON MENU(1) GOSUB  info,neu,laden,speichern,loschen,ende
  89.    GOTO wahl1
  90. ausgabe: 
  91.    ON MENU(1) GOSUB  gitter,grafik
  92.    GOTO wahl1
  93. spezi: 
  94.    ON MENU(1) GOSUB  statistik,drucken,umrechnen,changer,dividende 
  95.    GOTO wahl1
  96. gitter:
  97.    IF WINDOW(0)=2 THEN WINDOW CLOSE 2:WINDOW OUTPUT 1
  98.    LINE(210,40)-(610,177),3,bf
  99.    LINE(210,40)-(610,177),2,b
  100.    LINE(16,183)-(630,196),3,bf
  101.    MENU 2,1,1,".. in Zahlen -"
  102.    MENU 2,2,1,".. in Grafik  "
  103.    ausgabeart=0 
  104.    FOR q = 1 TO 16 STEP 2
  105.    LINE(230,48+q*8)-(587,48+q*8),0
  106.    NEXT
  107.    CALL dreieck(215!,166!,235!,176!,18!,3!)
  108.    CALL dreieck(585!,165!,605!,176!,2!,3!)
  109.    GOSUB werteeinsetzen 
  110.    WINDOW OUTPUT 1
  111.    RETURN
  112. werteeinsetzen:
  113.    COLOR 2,3:LOCATE 5,38:PRINT tag$(tag)+" - "+tag$(tag+6)+"         " 
  114.    FOR q = 1 TO 8
  115.    FOR w = 0 TO 6
  116.    LOCATE q*2+5,31+w*6:a$=STRING$(6-LEN(STR$(wert(q,tag+w))),32) 
  117.    PRINT wert(q,tag+w);a$ 
  118.    NEXT:NEXT
  119.    RETURN
  120. neu:
  121.    CALL sure("     Neustart !?"):GOSUB gitter
  122.    IF flag=1 THEN fehler=1
  123.    RETURN
  124. ende:
  125.    CALL sure("  Programm beenden !?"):GOSUB gitter 
  126.    IF flag=1 THEN MENU RESET:SYSTEM
  127.    RETURN
  128.  speichern:
  129.    CALL datensl1("Daten sichern"):GOSUB gitter  
  130.    IF e=1 THEN GOSUB RETURN
  131.    GOSUB gitter
  132.    OPEN b$ FOR OUTPUT AS #1
  133.    FOR q = 1 TO 366
  134.    PRINT #1,wert(wahl,q)
  135.    NEXT:CLOSE #1:wahl=0 
  136.    RETURN
  137. laden:
  138.    CALL datensl1("Daten laden"):GOSUB gitter 
  139.    IF e = 1 THEN RETURN
  140.    OPEN b$ FOR INPUT AS #1
  141.    FOR q = 1 TO 366
  142.    INPUT #1,wert(wahl,q)
  143.    IF wert(wahl,q)<0 OR wert(wahl,q)>99999& THEN q=366:ERROR 54
  144.    NEXT:CLOSE #1:wahl=0:GOSUB gitter
  145.    RETURN
  146. loschen:
  147.    CALL datensl1("Daten löschen"):GOSUB gitter             
  148.    IF e = 1 THEN GOSUB gitter:RETURN
  149.    KILL b$:GOSUB gitter
  150.    RETURN
  151. SUB datensl1(a$) STATIC
  152.    SHARED e,b$,wahl,flag   
  153.    e=0
  154.    CALL datensl(a$)
  155.    CALL auswahl(8!,16!,240!,80!,2!)
  156.    IF aktie$(wahl)=STRING$(0,32)  THEN BEEP:BEEP:e=1:PAINT(400,100),3:EXIT SUB
  157.    LOCATE 2+wahl,7:COLOR 2,1:PRINT " "+aktie$(wahl)+" "
  158.    CALL maus1(10!,93!,80!,106!,156!,93!,222!,106!)
  159.    IF flag=1 THEN e=1
  160.    IF e=1 THEN EXIT SUB  
  161.    b$=aktie$(wahl)+STR$(1988+jahr)+".Dat"
  162.    END SUB
  163. SUB datensl(a$) STATIC
  164.    LINE(210,40)-(610,178),3,bf
  165.    LINE(210,40)-(610,178),2,b
  166.    WINDOW CLOSE 2:CALL linieren(294!,46!,534!,171!)
  167.    WINDOW 2,a$,(294,54)-(530,168),0,2
  168.    PAINT (400,100),0:COLOR 3,0  
  169.    LINE(10,93)-(80,106),1,bf:COLOR 2,1:LOCATE 13,4:PRINT "ZURÜCK" 
  170.    LINE(156,93)-(222,106),1,bf:LOCATE 13,24:PRINT "OK"
  171.    CALL linieren(10!,93!,80!,106!):CALL linieren(156!,93!,222!,106!)
  172.    LOCATE 1,4:COLOR 3,0:PRINT "     Welche Aktie ?"
  173.    FOR q = 1 TO 8 
  174.    LOCATE q+2,2:PRINT q".  "aktie$(q)
  175.    NEXT 
  176.    END SUB
  177.    
  178. SUB auswahl(x1,y1,x2,y2,su) STATIC
  179.    SHARED wahl
  180. 10 IF MOUSE(0)>-1 THEN 10
  181.    x=MOUSE(1):y=MOUSE(2) 
  182.    IF x<x1 OR x>x2 OR y<y1 OR y>y2 THEN BEEP:BEEP:GOTO 10
  183.    x=INT(x/8):y=INT(y/8)
  184.    wahl=y-su+1
  185.    END SUB
  186. grafik:
  187.    MENU 2,1,1,"..in Zahlen  "
  188.    MENU 2,2,1,"..in Grafik -"
  189.    ausgabeart=1
  190.    LINE(211,41)-(609,176),0,bf:LINE (210,40)-(610,177),2,b
  191. 18 LINE(552,183)-(622,193),0,bf 
  192.    COLOR 3,0:LOCATE 24,71:PRINT 1988+jahr 
  193.    CALL linieren(552!,183!,622!,193!)
  194.    FOR q = 0 TO 11
  195.    LINE (q*44+16,183)-(q*44+48,193),0,bf 
  196.    CALL linieren(q*44+16!,183!,q*44+48!,193!)
  197.    LOCATE 24,INT(5.53*q+3)+1:PRINT LEFT$(monat$(q+1),3)
  198.    NEXT:COLOR 3,3:LOCATE 5,30:PRINT"                                                  "
  199.    flag5=0:jump=0:flag4=0                                 
  200. 11 IF MENU(0)>0 AND MENU(1)>0 THEN GOTO 12
  201.    IF MOUSE(0)>-1 THEN GOTO 11
  202.    x=MOUSE(1):y=MOUSE(2) 
  203.    IF x>40 AND x<163 AND y>45 AND y<170 THEN help1=INT(y/8):num=INT((help1-7)/2)+2:COLOR 2,0:LOCATE help1+1,6:PRINT aktie$(num):flag4=1:flag4=1
  204.    IF y>177 THEN num1=INT((x/5.53-4)/8)+1:help=INT(5.53*(num1-1)+3)+1:COLOR 2,0:LOCATE 24,help:PRINT LEFT$(monat$(num1),3):flag4=2:jump=1:flag5=1 
  205.    IF y>177 AND x>560 THEN COLOR 2,0:LOCATE 24,71:PRINT 1988+jahr:flag4=2:jump=2:flag5=1  
  206.    IF flag4=0  THEN BEEP:GOTO 11
  207.    IF flag4<> 1 OR flag5<>1 THEN 11    
  208.    grafikfehler=0:CALL hilo(num!,num1!):hi1=hi:lo1=lo
  209.    IF grafikfehler=1 THEN BEEP:ERROR 54
  210.    COLOR 3,0:LOCATE help1+1,6:PRINT aktie$(num)
  211.    IF hi=0 OR lo=0 THEN BEEP:GOTO 18
  212.    ON jump GOSUB mubersicht,jubersicht
  213.    IF flag=1 AND jump=1 THEN  18
  214.    IF flag<> 2 THEN grafik      
  215. 12 links=0:GOSUB gitter:RETURN
  216. jubersicht:
  217.    LINE(221,41)-(612,176),0,bf:rechts=0:links=0
  218.    LINE(220,50)-(220,170),3
  219.    LINE(220,170)-(600,170),3
  220.    IF wert(8,1)>0 THEN CALL hilo(8!,13!):GOSUB second
  221.    IF lo=0 OR hi=0 THEN GOSUB gitter:ERROR 54:flag=2:RETURN   
  222.    CALL pfeil(220!,50!,600!,170!)
  223.    CALL teilung(220!,170!,586!,7!,110!):abst=0
  224. 27 IF rechts=0 THEN rechts=1 ELSE rechts=0   
  225.    CALL nina(365!,num,222!,60!,370!,220!)
  226.    COLOR 3,0:LOCATE 24,71:PRINT 1988+jahr
  227.    LOCATE 2*num+5,6:PRINT aktie$(num):COLOR 1,0
  228.    CALL zeifertig:IF flag=1 AND rechts=1 AND wert(8,1)>0 AND num<>8 THEN num=8:GOTO 27
  229.    RETURN
  230. second:
  231.    IF hi1>hi  THEN hi=hi1
  232.    IF lo1<lo  THEN lo=lo1
  233.    RETURN
  234. SUB zeifertig STATIC
  235.    SHARED flag
  236.    LINE(16,183)-(630,196),3,bf
  237.    LINE(352,183)-(416,193),0,bf:CALL linieren(352!,183!,416!,193!)   
  238.    LINE(440,183)-(504,193),0,bf:CALL linieren(440!,183!,504!,193!) 
  239.    LOCATE 24,46:PRINT "WEITER":LOCATE 24,57:PRINT"ZURÜCK" 
  240.    CALL maus1(352!,183!,488!,194!,440!,183!,504!,194!)
  241.    LINE(16,183)-(630,196),3,bf
  242.    END SUB                    
  243. mubersicht:
  244.    IF links=1 THEN links=0:w=420:GOTO 17
  245.    LINE(221,42)-(609,169),0,bf
  246.    FOR q = 0 TO 1
  247.    LINE(240+q*180,66)-(240+q*180,170),3
  248.    CALL pfeil(240+q*180!,66!,390+q*180!,170!)
  249.    LINE (240+q*180,170)-(390+q*180,170),3
  250.    CALL teilung(240+q*180!,170!,392+q*180!,5!,100!)
  251.    NEXT:w=240!:links=1
  252. 17 CALL nina(anz(num1),num,w,74!,150!,w) 
  253.    CALL zeifertig
  254.    RETURN
  255.    SUB nina(fini,num,b,c,abst1,x) STATIC
  256.    SHARED  hi,lo,abst,links,num1,rechts
  257.    IF rechts=1 THEN farbe=2 ELSE farbe=1
  258.    IF fini<300 THEN farbe=2
  259.    IF fini<300 THEN multi = 5 ELSE multi=1 AND anf(num1)=1
  260.    IF multi = 1 THEN COLOR 2,3:LOCATE 5,38:PRINT "Min.:";lo;" Max.:";hi
  261.    IF multi = 5 THEN COLOR 2,0:LOCATE 8,55-20*links:PRINT"Min.:";lo:LOCATE 9,55-20*links:PRINT"Max.:";hi:LOCATE 7,55-20*links:PRINT monat$(num1)
  262.    diff=hi-lo:diff$=STR$(diff)      
  263.    pixel=diff/(170-c):wert1=wert(num,anf(num1))-lo:y=170-wert1/pixel  
  264.    abst=INT(1000/pixel) 
  265.    IF farbe=2 THEN CALL teilung1(x,pixel,abst1)
  266.    FOR q = anf(num1) TO  anf(num1)+fini-1 
  267.    hx=x:hy=y:IF wert(num,q)=0 THEN q=anf(num1)+fini-1:GOTO 90
  268.    IF wert(num,q)<lo THEN wert(num,q)=lo
  269.    IF wert(num,q)>hi THEN wert(num,q)=hi
  270.    x=x+1*multi:wert1=wert(num,q)-lo:y=170-wert1/pixel  
  271.    LINE(hx,hy)-(x,y),farbe
  272. 90 NEXT
  273.    LOCATE INT(y/8)+1,INT(x/8)+1:COLOR 3,0:PRINT num
  274.    LOCATE 2*num+5,6:COLOR 3,0:PRINT aktie$(num)
  275.    END SUB
  276. SUB hilo(num!,num1!) STATIC
  277.    SHARED hi,lo,jahr,e,day,day1,tag,grafikfehler
  278.    e=0:r=tag
  279.    IF num1 < 13 THEN r=anf(num1)+anz(num1)-1 ELSE anf(num1)=1
  280.    hi=wert(num,anf(num1)):lo=hi 
  281.    FOR q = anf(num1) TO r
  282.    IF wert(num,q)=0 AND num1<13 THEN grafikfehler=1:GOTO 70
  283.    IF wert(num,q)=0 THEN 70 
  284.    IF wert(num,q)<lo THEN lo=wert(num,q):day1=q
  285.    IF wert(num,q)>hi THEN hi=wert(num,q):day=q
  286. 70 NEXT 
  287.    END SUB
  288. SUB teilung(x,y,x1,abst,abst1) STATIC
  289.    FOR q = x TO x1 STEP abst
  290.    LINE(q,y-1)-(q,y-abst1+3),3  
  291.    NEXT
  292.    END SUB
  293. SUB teilung1(x,pixel,abst1) STATIC
  294.    SHARED hi,lo:p=10:dif=hi-lo 
  295.    IF dif>120 THEN p=100
  296.    IF dif>1200 THEN p=1000
  297.    IF dif>12000& THEN p=10000
  298.    COLOR 2,0:LOCATE 7,71:PRINT p;" "
  299.    a=(INT(lo/p))*p+p
  300. 91 IF a>=hi THEN END SUB
  301.    q=170-INT((a-lo)/pixel):LINE(x,q)-(x+abst1,q),3
  302.    a=a+p:GOTO 91
  303. SUB pfeil(x,y,x1,y1) STATIC
  304.    LINE (x,y)-(x+3,y+3),3
  305.    LINE (x,y)-(x-3,y+3),3
  306.    LINE (x1,y1)-(x1-3,y1-3),3
  307.    LINE (x1,y1)-(x1-3,y1+3),3
  308. END SUB   
  309. info:
  310.    WINDOW CLOSE 2:CALL linieren(224!,50!,596!,167!)
  311.    WINDOW 2,"              Autorenvermerk",(224,60)-(592,167),0,2
  312.    PAINT(15,15),0:COLOR 3,0
  313.    LOCATE 2,4:PRINT"Programmname :  Aktien V3.2"
  314.    LOCATE 3,4:PRINT"Programmart  :  Aktienverwaltungsprogramm"
  315.    LOCATE 4,4:PRINT"Computer     :  Amiga 500,1000,2000"
  316.    LOCATE 5,4:PRINT"Sprache      :  Amiga Basic"
  317.    LOCATE 6,4:PRINT"Autor        :  Helmut Gaberschek"
  318.    LOCATE 8,16:PRINT"(c) 30.7.1988"
  319.    LINE (30,65)-(78,83),1,bf
  320.    CALL linieren(30!,65!,78!,83!)
  321.    COLOR 2,1:LOCATE 10,7:PRINT"OK"
  322.    LINE (305,65)-(353,83),1,bf
  323.    CALL linieren(305!,65!,353!,83!)
  324.    LOCATE 10,41:PRINT"OK"
  325.    CALL maus1(30!,65!,78!,83!,305!,65!,353!,83!) 
  326.    GOSUB gitter
  327.    RETURN
  328. SUB maus1(x,y,x1,y1,x2,y2,x3,y3) STATIC
  329.    SHARED flag
  330.    flag=0
  331. mau1:
  332.    IF MOUSE(0)>-1 THEN GOTO mau1
  333.    xk=MOUSE(1):yk=MOUSE(2)
  334.    IF xk>x AND xk<x1 AND yk>y AND yk<y1 THEN flag=1
  335.    IF xk>x2 AND xk<x3 AND yk>y2 AND yk<y3 THEN flag=2
  336.    IF flag>0 THEN END SUB
  337.    GOTO mau1
  338. SUB linieren(x,y,x1,y1) STATIC
  339.    LINE (x,y)-(x1,y),2
  340.    LINE (x1,y)-(x1,y1),2
  341.    LINE (x,y)-(x,y1),2
  342.    LINE (x,y1)-(x1,y1),2
  343.    LINE (x1,y+5)-(x1+5,y1),2,bf
  344.    LINE (x+5,y1)-(x1+5,y1+3),2,bf 
  345.    END SUB
  346. SUB dreieck(x,y,x1,y1,p1,farbe) STATIC
  347.    a = 2
  348. 3  LINE(x,y)-(x1,y1),a,b
  349.    LINE(x,y)-(x1,y1),a
  350.    LINE(x,y1)-(x1,y),a
  351.    PAINT(x+p1,y+8),2
  352.    IF a = farbe THEN END SUB
  353.    a = farbe:GOTO 3    
  354. eingabe:IF ausgabeart=1 THEN RETURN
  355.          
  356. prufung:flag2=0 
  357.    IF MOUSE(0)=0 THEN prufung
  358.    x=MOUSE(1):y=MOUSE(2)  
  359.    IF x>40 AND x<163 AND y>45 AND y<170 THEN flag2=1
  360.    IF x>247 AND x<543 AND y>45 AND y<166 THEN flag2=2 
  361.    IF x<239 AND x>228 AND y>169 AND y<176 THEN tag=tag-7:flag2=3:IF tag <= 1 THEN tag=1 
  362.    IF x>583 AND x<593 AND y>169 AND y<176 THEN tag=tag+7:flag2=3:IF tag >= 360 THEN tag=360
  363.    IF flag2 = 0 THEN BEEP:RETURN  
  364.    BEEP
  365.    IF flag2=3 THEN GOSUB werteeinsetzen:RETURN 
  366.    x=INT(x/8):y=INT(y/8):IF y/2 = INT(y/2) THEN y=y+1
  367.    num=((y-7)/2)+1:w=0  
  368.    IF flag2=1 THEN COLOR 3,0:LOCATE y,x+1:PRINT"|":index=5  
  369.    IF flag2=1 THEN CALL editor(y,x,num,flag2,48!,122!,6!,19!,index,ad,0!)
  370.    IF flag2=2 THEN x=INT(x/6)*6+1:ad=INT(x/6)-5:lrand=x:rrand=x+4:LOCATE y,x+1:COLOR 0,3:PRINT"|     ":index=x+1
  371.    IF flag2=2 THEN CALL editor(y,x,num,flag2,46!,57!,lrand,rrand,index,ad,0!)
  372.    IF flag6=1 THEN GOSUB werteeinsetzen
  373.    RETURN
  374. SUB editor(y,x,num,flag2,ugrenze,ogrenze,lrand,rrand,index,ad,a) STATIC
  375.    SHARED flag6
  376.    e=0:IF flag6=1 THEN flag6=0:x=x+1  
  377.    IF flag2=3 THEN index=x:COLOR 2,1:hx=x
  378. 2  a$=INKEY$:IF a$ = ""THEN  2
  379.    IF ASC(a$)<ugrenze OR ASC(a$)>ogrenze THEN falsch=1
  380.    IF a$ <> CHR$(13) AND a$ <> CHR$(8) AND falsch=1 THEN falsch=0:GOTO 2
  381.    IF a$ = CHR$(13) AND flag2=1 THEN e=1:CALL ende1(y,x,num)
  382.    IF a$ = CHR$(13) AND flag2=2 THEN e=1:CALL ende2(y,x,num,lrand,ad)
  383.    IF a$ = CHR$(13) AND flag2=3 THEN e=1:CALL ende3(y,hx,num,a,rrand)
  384.    IF e=1 THEN END SUB    
  385.    IF x <=  lrand AND a$=CHR$(8) THEN BEEP:x=lrand:GOTO 2
  386.    IF x >  rrand THEN BEEP:x=rrand:m=1:GOTO 2
  387.    m=0 
  388.    IF w = 0 THEN x=x+1
  389.    IF a$ <> CHR$(8) THEN w = 0 
  390.    IF a$ = CHR$(8) THEN x = x -1:a$=" ":w=w+1     
  391.    LOCATE y,x 
  392.    PRINT a$ :LOCATE y,x+1:PRINT"|"
  393.    IF w>0 THEN LOCATE y,x:PRINT"| " 
  394.    IF flag2<2 THEN nam$(num,x-index)=a$ ELSE wert1$(x-index)=a$
  395.    GOTO 2
  396. SUB ende1(y,x,num) STATIC
  397.    SHARED flag6,x
  398.    FOR q = 14 TO 0 STEP -1
  399.    IF nam$(num,q)=CHR$(32) THEN nam$(num,q)=STRING$(0,32)
  400.    NEXT:aktie$(num)=STRING$(0,32)
  401.    FOR q=0 TO 14
  402.    aktie$(num)=aktie$(num)+nam$(num,q)
  403.    NEXT:a$=STRING$(16-LEN(aktie$(num)),32) 
  404.    LOCATE y,6:PRINT aktie$(num)+a$
  405.    IF x=6 THEN FOR q = 1 TO 366:wert(num,q)=0:NEXT:flag6=1:x=x+1 
  406.    BEEP:END SUB 
  407. SUB ende2(y,x,num,lrand,ad) STATIC
  408.    SHARED tag,jahr
  409.    FOR q=0 TO 4:l$=l$+wert1$(q):wert1$(q)=STRING$(0,32):NEXT:geldi=VAL(l$):la=LEN(l$)+1:l$=STRING$(0,32)
  410.    wert(num,tag+ad)=geldi   
  411.    LOCATE y,lrand:PRINT wert(num,tag+ad);a$:BEEP
  412.    END SUB
  413. SUB ende3(y,x,num,b,rrand) STATIC 
  414.    SHARED geldi   
  415.    FOR q=0 TO 6:l$=l$+wert1$(q):wert1$(q)=STRING$(0,32):NEXT:geldi=VAL(l$):la=LEN(l$)+1:l$=STRING$(0,32)
  416.    IF b=0 THEN wahr(num)=geldi   
  417.    LOCATE y,x:PRINT geldi;STRING$(la-LEN(STR$(geldi)),32):BEEP
  418.    END SUB 
  419. achtung:
  420.    BEEP:BEEP:BEEP
  421.    IF WINDOW(0)=2 THEN WINDOW CLOSE 2
  422.    LOCATE 5,37:COLOR 2,3:q=365:fehler$="! Unbekannter Fehler !             " 
  423.    IF ERR=53 THEN fehler$="! Datei nicht gefunden !           "
  424.    IF ERR=57 THEN fehler$="! Ein-/Ausgabefehler !             "
  425.    IF ERR=61 THEN fehler$="! Diskette voll !                  "
  426.    IF ERR=70 THEN fehler$="! Schreibschutz entfernen !        "
  427.    IF ERR=54 THEN fehler$="! Unerlaubter Aktienwert !         "
  428.    IF ERR=68 THEN fehler$="! Gerät nicht verfügbar !          "
  429.    IF ERR=51 THEN fehler$="! Interner Fehler !                ":fehler=1
  430.    IF ERR=67 THEN fehler$="! Zuviele Dateien !                "
  431.    IF ERR=74 THEN fehler$="! Unbekannte Diskette !            "
  432.    IF ERR=62 THEN fehler$="! Zu wenige Daten !                "
  433.    PRINT fehler$ 
  434. 14 IF MOUSE(0)>-1 GOTO 14
  435.    GOSUB gitter
  436.    RESUME wahl1
  437. SUB auswahl2(a) STATIC
  438.    SHARED wahl2,hx,hy 
  439.    wahl2=0                
  440.    x=MOUSE(1):y=MOUSE(2):spalte=INT(x/58+.3)
  441.    IF a=1 AND spalte/2=INT(spalte/2) THEN spalte=spalte-1
  442.    lo(1)=8:lo(2)=15:lo(3)=27:lo(4)=34:hx=lo(spalte)
  443.    wahl2=INT(y/8)+(spalte)*9-9:hy=INT(y/8)+1
  444.    END SUB
  445. statistik:
  446. 45 CALL datensl1("Statistik"):IF e=1 THEN GOSUB gitter:RETURN
  447.    LINE(221,41)-(609,177),3,bf:GOSUB gitter
  448.    WINDOW CLOSE 2:CALL linieren(235!,48!,585!,168!)
  449.    WINDOW 2,"                 Statistik",(235,58)-(585,168),0,2:CLS:PAINT(270,60),1 
  450.    LINE(48,84)-(120,98),3,bf:CALL linieren(48!,84!,120!,98!)
  451.    LINE(232,84)-(296,98),3,bf:CALL linieren(232!,84!,296!,98!)
  452.    COLOR 2,3:LOCATE 12,8:PRINT " ZURÜCK":LOCATE 12,31:PRINT "WEITER":COLOR 2,1 
  453.    LOCATE 9,13:PRINT "Bitte warten..(7 sek)"
  454.    CALL hilo(wahl,13!):LOCATE 9,10:PRINT "                              "
  455.    LOCATE 2,3  :PRINT "Name der Aktie  :  ";aktie$(wahl)
  456.    LOCATE 3,3:PRINT "Kurswert        : ";wert(wahl,tag)
  457.    LOCATE 4,3:PRINT "höchster Wert   : ";hi;:LOCATE 4,29:PRINT  "(";tag$(day);")"
  458.    LOCATE 5,3:PRINT "niederster Wert : ";lo;:LOCATE 5,29:PRINT  "(";tag$(day1);")"
  459.    LOCATE 6,3:PRINT "Durchschnitt    : ";(hi+lo)/2
  460.    LOCATE 7,3:PRINT "Gewinn          : ";wert(wahl,tag)-wert(wahl,day1)
  461. 46 IF MOUSE(0)>-1 THEN 46    
  462.    CALL maus1(48!,84!,120!,98!,232!,84!,296!,98!)
  463.    IF flag=1 THEN GOSUB gitter:RETURN
  464.    GOSUB gitter:GOTO 45
  465.               
  466. changer:
  467.    CALL aufbau("               Valuten-Kurse","ZURÜCK")
  468.    COLOR 0,1:z(1)=7:z(2)=14:z(3)=26:z(4)=33
  469.    FOR q=0 TO 3:FOR w=1 TO 9
  470.    LOCATE  1+w,z(q+1):PRINT wahr(q*9+w):NEXT:NEXT                                     
  471. 22 flag=0:CALL maus2(0!):IF flag>0 THEN OPEN "kurse" FOR OUTPUT AS #1:FOR q= 1 TO 36:PRINT #1,wahr(q):NEXT:CLOSE #1:WINDOW CLOSE 2:WINDOW OUTPUT 1:GOSUB gitter:RETURN
  472.    GOTO 22 
  473. umrechnen:
  474.    CALL aufbau("                Umrechnen","NULL"):z(1)=7:z(2)=26:COLOR 2,1 
  475. 23 i=0:FOR q=0 TO 1:FOR w=1 TO 9:lang=LEN(STR$(geld(w+i))):a$=LEFT$(STR$(geld(w+i)),14)
  476.    a$=a$+STRING$(15-LEN(a$),32):LOCATE 1+w,z(q+1):PRINT a$:NEXT:i=18:NEXT   
  477.    flag=0:CALL maus2(1!):IF flag>1 THEN WINDOW CLOSE 2:WINDOW OUTPUT 1:GOSUB gitter:RETURN
  478.    IF flag=1 THEN FOR q=0 TO 36:geld(q)=0:NEXT:GOTO 23
  479.    grosch=geldi*wahr(wahl2)  
  480.    FOR q=1 TO 36:geld(q)=grosch/wahr(q):NEXT:GOTO 23  
  481. SUB aufbau(a$,heli$) STATIC
  482.    SHARED flag,wahl2,flag1
  483.    FOR q=1 TO 36:geld(q)=0:NEXT
  484.    LINE(221,41)-(609,177),3,bf:WINDOW CLOSE 2:CALL linieren(235!,48!,585!,168!)
  485.    WINDOW 2,a$,(235,58)-(585,168),0,2:PAINT (240,60),1
  486.    x=0:COLOR 3,1:FOR q=1 TO 18:y=q:IF y>=10 THEN y=y-9:x=20
  487.    LOCATE y+1,x+4:PRINT defis$(q):NEXT
  488.    LINE (48,84)-(120,98),3,bf:CALL linieren(48!,84!,120!,98!)
  489.    LINE (232,84)-(304,98),3,bf:CALL linieren(232!,84!,304!,98!)
  490.    COLOR 2,3:LOCATE 12,8:PRINT heli$:LOCATE 12,31:PRINT "ZURÜCK"
  491.    END SUB
  492. dividende:
  493.    CALL datensl1("Dividende"):GOSUB gitter:IF e=1 THEN GOSUB gitter:RETURN    
  494.    LINE(221,41)-(609,177),3,bf:WINDOW CLOSE 2:CALL linieren(235!,48!,586!,172!)
  495.    WINDOW 2,"                 Dividende",(235,58)-(585,172),0,2:PAINT (240,60),1 
  496. 63 LINE(48,84)-(120,98),3,bf:CALL linieren(48!,84!,120!,98!):proz=0
  497.    LINE(232,84)-(304,98),3,bf:CALL linieren(232!,84!,304!,98!)
  498.    COLOR 2,3:LOCATE 12,11:PRINT "OK":LOCATE 12,32:PRINT "ZURÜCK":flag=0
  499.    CALL dreieck(140!,84!,160!,96!,18!,1!):CALL dreieck(192!,84!,212!,96!,2!,1!)
  500.    COLOR 2,1:LOCATE 2,6:PRINT "Dividende :":LOCATE 2,25:PRINT aktie$(wahl)
  501.    grafikfehler=0
  502. 60 COLOR 2,3:LOCATE 2,18:PRINT LEFT$(STR$(proz),4)+" ":COLOR 2,1
  503.    IF MOUSE(0)>-1 THEN GOTO 60
  504.    x=MOUSE(1):y=MOUSE(2)
  505.    IF x>48 AND x<120 AND y>80 THEN GOTO 61  
  506.    IF x>232 AND x<304 AND y>80 THEN GOSUB gitter:RETURN 
  507.    IF x>140 AND x<160 AND y>84 AND y<96 THEN proz=proz-.1
  508.    IF x>192 AND x<212 AND y>84 AND y<96 THEN proz=proz+.1
  509.    IF proz<=0 THEN proz=0
  510.    IF proz>=99 THEN proz=99
  511.    FOR q=1 TO 300:NEXT:GOTO 60
  512. 61 CLS:BEEP:diwij=0:FOR q= 1 TO 12 
  513.    LOCATE q,2:PRINT monat$(q):CALL hilo(wahl,q):LOCATE q,18:PRINT ":" 
  514.    diwi=(hi-wert(wahl,1))/100*proz:IF diwi<0 THEN diwi=0:diwi$="Verlust" ELSE diwi$=STR$(diwi)+"           "
  515.    LOCATE q,20:PRINT diwi$:diwij=diwij+diwi:NEXT
  516.    LINE(140,95)-(250,95),2:LOCATE 13,2:PRINT aktie$(wahl);" (";LEFT$(STR$(proz),4);" %)":LOCATE 13,20:PRINT "+";diwij
  517. 62 IF MOUSE(0)>-1 THEN GOTO 62
  518.    CLS:GOTO 63
  519.  SUB maus2(a) STATIC
  520.    SHARED flag,wahl2,hy,hx
  521. 40 IF MOUSE(0)>-1 THEN 40
  522.    IF MOUSE(2)>80 THEN CALL maus1(48!,84!,120!,98!,232!,84!,296!,98!):IF flag<>0 THEN EXIT SUB  
  523.    CALL auswahl2(a):COLOR 2,1:BEEP 
  524.    LOCATE INT(hy),INT(hx):PRINT"|":CALL editor(hy,hx-1,wahl2,3!,46!,57!,7!,hx+4,hx-1,0!,a) 
  525.    END SUB
  526. drucken:
  527.    CALL datensl1("Drucken"):GOSUB gitter
  528.    OPEN "lpt1:" FOR OUTPUT AS#2
  529.    PRINT #2,aktie$(wahl)+STR$(1988+jahr)
  530.    FOR q=1 TO 366
  531.    PRINT #2,tag$(q)+" "+STR$(wert(wahl,q))
  532.    IF wert(wahl,q)=0 THEN q=365
  533.    NEXT
  534.    CLOSE #2:GOSUB gitter:RETURN
  535. SUB sure(a$) STATIC
  536.    SHARED flag
  537.    WINDOW CLOSE 2
  538.    LINE (221,41)-(609,176),3,bf:CALL linieren(300!,50!,500!,120!)
  539.    WINDOW 2,a$,(300,60)-(500,120),0,2:PAINT (10,10),1
  540.    LINE(30,20)-(90,34),3,bf:LINE(110,20)-(170,34),3,bf
  541.    CALL linieren(30!,20!,90!,34!):CALL linieren(110!,20!,170!,34!)
  542.    COLOR 2,3:LOCATE 4,8:PRINT "JA":LOCATE 4,17:PRINT "NEIN"
  543.    CALL maus1(30!,20!,90!,34!,110!,20!,170!,34!)
  544.    END SUB
  545.    
  546.    
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.